﻿// 全局变量
var m_commentPageSize = 10; // 每页评论行数
var m_userinfos = undefined;	// 用户信息，格式："userid|username|roles"

// Cookie 插件
jQuery.cookie = function (name, value, options) {
	if (typeof value != 'undefined') { // name and value given, set cookie
		options = options || {};
		if (value === null) {
			value = '';
			options.expires = -1;
		}
		var expires = '';
		if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
			var date;
			if (typeof options.expires == 'number') {
				date = new Date();
				date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
			} else {
				date = options.expires;
			}
			expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
		}
		// CAUTION: Needed to parenthesize options.path and options.domain
		// in the following expressions, otherwise they evaluate to undefined
		// in the packed version for some reason...
		var path = options.path ? '; path=' + (options.path) : '';
		var domain = options.domain ? '; domain=' + (options.domain) : '';
		var secure = options.secure ? '; secure' : '';
		document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	} else { // only name given, get cookie
		var cookieValue = null;
		if (document.cookie && document.cookie != '') {
			var cookies = document.cookie.split(';');
			for (var i = 0; i < cookies.length; i++) {
				var cookie = jQuery.trim(cookies[i]);
				// Does this cookie string begin with the name we want?
				if (cookie.substring(0, name.length + 1) == (name + '=')) {
					cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
					break;
				}
			}
		}
		return cookieValue;
	}
};

// 页面加载完成后初始化通用内容，并调用AJAX 获取动态数据。
$(window).load(function () {
	var prompts = {}; // 初始化Ajax.aspx的哈希表参数。
	//==== 初始参考文档
	if ($("#ajax_associate").length != 0) {		// 参考文档元素
		prompts["associate"] = 10; // 参考文档行数
	}

	//==== 初始化登录状态界面
    //setLoginStatus();// 不用客户端另外保存用户信息 20140104
	if ($("#iduserinfo").length != 0) {		// 登录信息
	    prompts["getuserinfo"] = true; // 取登录信息
	}

	//==== 初始化搜索
	if ($(".sitesearch").length != 0) {
		sitesearch();
	}

	//==== 初始化评论界面
	if ($("#commentlist").length != 0) {
		initComments();
		prompts["getcomments"] = 0; 	// 取评论，0 指定第一页
		prompts["pagesize"] = m_commentPageSize; // 取评论页数，m_commentPageSize 每页行数取页数。
		prompts["clickarticle"] = true; // 第一次取评论，记录文档点击次数。
	}

	// 页面加截完成后调用AJAX 获取动态数据。
	$.getJSON("/Ajax.aspx?" + Date(), prompts, // 地址加一个日期参数，强制更新。
		function (data) {
			if (!data)
				return;

			if (data["associate"] !== undefined) // 参考文档
				fillAssociate(data["associate"]);

			if (data["comments"] !== undefined) // 有评论数据
				fillComments(data);

			if (isUserinfo(data["userinfo"]))	// 用户信息
				setLogined();
			else
				setInlogin();

		}
	);

	// 百度统计
	//$.getScript("http://hm.baidu.com/h.js?34aae54d3a411fceb05b44df2f80ee8c");	// jq1.4.2版以后不能用这句

	var z = document.getElementsByTagName("head")[0] || document.documentElement,
	C = document.createElement("script");
	C.src = "http://hm.baidu.com/h.js?34aae54d3a411fceb05b44df2f80ee8c"; // 不包含https://
	z.insertBefore(C, z.firstChild);
	//alert(Date());
});

	// 填充参考文档
function fillAssociate(data) {
	var str = "";
	$.each(data, function (key, val) {
		str += "<a href='" + key + ".htm' title='" + val + "'>" + val + "</a>";
	});
	$("#ajax_associate").html(str);
}

// 填充评论
function fillComments(data) {
	var arr = data["comments"];
	var n = arr.length / 5;
	var str = "";
	// 格式化评论，每条评论有五个数据，日期作者等。
	var i = 0;
	for (; i < n; i++) {
		str += "<div class='commentauthor'>" + arr[5 * i + 0] + " &nbsp;&nbsp;" + arr[5 * i + 1] + " &nbsp;&nbsp;" + arr[5 * i + 2] + " &nbsp;&nbsp;" + arr[5 * i + 3] + "</div>" +
			"<div class='commentcontent'>" + arr[5 * i + 4] + "</div>"
	}
	// 没有评论时补2行空行
	for (; i < 2; i++)	//补一些空行
		str += "<div class='commentauthor'>&nbsp;</div><div class='commentcontent'>&nbsp;</div>";
	$("#commentlist").html(str);
	$("#popularity").html(data["commentcount"] + "/" + data["clickcount"]);

	HPages(
	{ ctrlid: "#commentpages",
		page: parseInt(data["commentpage"]),
		pages: parseInt(data["commentpages"]),
		pagenu: 13, // 底部显示13个页号
		gopage: function (pa) {
			var prompts = {
				getcomments: pa, // 取评论，page: 指定页
				pagesize: m_commentPageSize	// 取评论页数，m_commentPageSize 每页行数取页数。
			};
			$.getJSON("/Ajax.aspx?" + Date(), prompts, // 地址加一个日期参数，强制更新。
				function (data) {
					fillComments(data);
				}
			);
		}
	});

}

// 初始化评论界面
function initComments() {
	// 加载表情
	var titles = new Array(
		"微笑", "撇嘴", "色", "发呆", "害羞", "流泪", "得意", "闭嘴",
		"调皮", "发怒", "尴尬", "大哭", "睡", "呲牙", "惊讶", "难过",
		"酷", "冷汗", "抓狂", "吐", "偷笑", "可爱", "白眼", "傲慢",
		"饥饿", "困", "流汗", "憨笑", "疑问", "嘘", "折磨", "再见",
		"擦汗", "鼓掌", "糗大了", "坏笑", "委屈", "快哭了", "可怜", "亲亲",
		"鄙视", "咖啡", "强", "弱", "握手", "胜利", "抱拳", "ok"
	);

	var str = "";
	for (var i = 1; i <= titles.length; i++) {
		var nstr = i < 10 ? "0" + i : i;
		//str += "<img onclick=\"insertbq('{{em" + nstr + "}}')\" src='/images/bq/em" + nstr + ".gif' title='" + titles[i - 1] + "' />";
		str += "<img id='" + nstr + "' src='/images/bq/em" + nstr + ".gif' title='" + titles[i - 1] + "' />";
	}
	$("#commentbq").html(str); // ?? 有没有高效的方法，一次载入。

	//当前光标位置或选择区添加表情
	$("#commentbq img").click(function () {
		var $o = $("#commenttext");
		var obj = $o[0];

		// 最多两个表情
		var regex1 = /\{\{em[0-9]{2}\}\}/gi;
		var arrMatches = obj.value.match(regex1);
		if (arrMatches && arrMatches.length >= 2) {
			alert("输入表情太多。");
			return;
		}

		var bq = "{{em" + $(this).attr('id') + "}}";

		// 插入表情
		$o.focus();
		if (obj.value.length == 0)	//没有字符
			obj.value = bq;
		else if (obj.selectionStart) {	//FF, Chrome
			var start = obj.selectionStart;
			obj.value = obj.value.substr(0, obj.selectionStart) + bq + obj.value.substr(obj.selectionEnd);
			obj.selectionStart = obj.selectionEnd = start + bq.length;
		} else if (document.selection && document.selection.createRange) {	//IE
			var sel = document.selection.createRange();
			sel.text = bq;
			sel.select();
		} else {	//其它
			obj.value += txt;
		}
	});

	$("#commentaddbtn").click(function () {
		var othis = this;
		this.disabled = true; //?? 防止重复提交，不能防止页面刷新
		try {
			$("#commenttext").verifyLength(1, 500);
			var prompts = {
				pagesize: m_commentPageSize, // 取评论页数，m_commentPageSize 每页行数取页数。
				getcomments: 0, // 添加评论后，获取评论并显示第一页评论
				addcomment: $("#commenttext").valTrim()
			};
			$.getJSON("/Ajax.aspx?" + Date(), prompts, // 地址加一个日期参数，强制更新。
				function (data) {
					fillComments(data);
					window.location = "#comments"; // 添加评论完成后，滚动到评论头部
					$("#commenttext").val(""); 	// 清空评论内容
					othis.disabled = false;
				}
			);
		}
		catch (err) {
			alert(err.message);
			othis.disabled = false;
		}
	});
}

// 从页面快速登录
function fastLogin() {
	login($("#inpusername").valTrim(), $("#inppassword").valTrim(), true)
}

// 从对话框登录
function dlgLogin() {
	login($("#iddlgusername").valTrim(), $("#iddlgpassword").valTrim(), true);
}

// 登录
function login(username, password, autologin) {
	//btnlogin.disabled = true; //?? 防止重复提交

	try {
		var prompts = {
			login: username,
			password: password,
			autologin: autologin
		};
		$.post('/Ajax.aspx', prompts, function (data) {
			if ( isUserinfo(data) ) {
				if ($.modal)
					$.modal.close();

				setLogined();

				$("#inpusername").val("");
				$("#inppassword").val("");
				//$("#idautologin").attr("checked", false);
				$.modal("<div class='modaldlgtitle'>登录成功</div><br />" +
					"登录成功，下次打开页面自动进入登录状态，如果<br>想退出登录状态请点击右上角的注销按钮。<br><br>" +
					"<input onclick='$.modal.close();' id='iddlgcancle' type='button' value=' 关闭 ' />");
			}
			else {
				alert(data);
			}

			//??btnlogin.disabled = false;
		});
	}
	catch (err) {
		alert(err.message);
		//this.disabled = false;
	}
}

// 显示登录对话框
function showLogin() {
	$.modal("<div class='modaldlgtitle'>登录</div><br />" +
		"用户名或电子邮箱：<br /><input id='iddlgusername' type='text' /><br /><br />" +
		"密码：<br /><input id='iddlgpassword' type='password' /><br /><br />" +
		"<input onclick='dlgLogin();' id='iddlglogin' type='button' value=' 登 录 ' />&nbsp;&nbsp;" +
		"<input onclick='$.modal.close();showRegistration()' id='iddlgregister' type='button' value=' 注 册 ' />&nbsp;&nbsp;" +
		"<input onclick='$.modal.close();' id='iddlgcancle' type='button' value=' 取 消 ' />"
	);
		$("#iddlgusername, #iddlgpassword").keypress(function (event) {
		if (event.keyCode == 13)
			dlgLogin();
	})
}

// 对话框形式注册
function dlgRegister() {
	//??this.disabled = true; // 防止重复提交

	try {
		$("#iddlgusername").verifyUsername(2, 50);
		$("#iddlgemail").verifyEmail();
		$("#iddlgpassword1").verifyPassword(2, 50, $("#iddlgpassword2"));

		var prompts = {
			register: $("#iddlgusername").valTrim(),
			email: $("#iddlgemail").valTrim(),
			password: $("#iddlgpassword1").valTrim()	// 原始文件这儿多一个逗号，IE6通不过。
		};
		$.post('/Ajax.aspx', prompts, function (data) {
			if (isUserinfo(data)) {
				$.modal.close();


				setLogined();
				$.modal("<div class='modaldlgtitle'>注册成功</div><br />" +
					"注册成功，已经登录，下次打开页面自动进入登录状态，如果<br>想退出登录状态，请点击右上角的注销按钮。<br><br>" +
					"<input onclick='$.modal.close();' id='iddlgcancle' type='button' value=' 关闭 ' />");
			}
			else
				alert(data);

			//??this.disabled = false;
		});

	}
	catch (err) {
		alert(err.message);
		//??this.disabled = false;
	}
}

// 显示注册对话框
function showRegistration() {
	$.modal("<div class='modaldlgtitle'>快速注册</div><br />" +
		"用户名(2-50个字符)<br /><input id='iddlgusername' type='text' /><br /><br />" +
		"电子邮箱(可找回密码)<br /><input id='iddlgemail' type='text' /><br /><br />" +
		"密码(2-50个字符)<br /><input id='iddlgpassword1' type='password' /><br /><br />" +
		"确认密码<br /><input id='iddlgpassword2' type='password' /><br /><br />" +
		"<input onclick='dlgRegister();' id='iddlglogin' type='button' value=' 注 册 ' />&nbsp;&nbsp;&nbsp;&nbsp;" +
		"<input onclick='$.modal.close();' id='iddlgcancle' type='button' value=' 取 消 ' />"
	);

	$("#iddlgusername, #iddlgemail, #iddlgpassword1, #iddlgpassword2").keypress(function (event) {	//?? keydown事件在ie6中没有回车事件
		if (event.keyCode == 13)
			dlgRegister();
	});
}

// 显示用户名// 不用客户端另外保存用户信息 20140104
/*function setLoginStatus() {
    
	var str = $.cookie("hUserInfo");
	if (str) {
		userinfos = str.split("|");
		setLogined();
	}
	else
		setInlogin();
}*/

// 已经登录
/*function isLogined() {
    // 不用客户端另外保存用户信息 20140104
    //var str = $.cookie("hUserInfo");
	//return str != null;

	return m_userinfos != undefined;
}*/

// 传入的字符串是不是用户信息
function isUserinfo( str )
{
	// 匹配 0630b16d-7ace-446c-9ffc-3c84cc3598ea|admin|A1
	var b = /^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\|.+\|/.test(str);
	if (b)
		m_userinfos = str.split("|");

	return b;
}

// 已经登录，显示用户名和注销
function setLogined() {
	$(".userlogined").show();
	$(".userinlogin").hide();	// 有两处class=userinlogin
	$(".userloading").hide();

	
	if (m_userinfos[2].length == 0)
		m_userinfos[2] = "D";

	$("#idusername").html(m_userinfos[1] + " " + m_userinfos[2]);
}

// 未登录，显示登录界面
function setInlogin() {
	$(".userlogined").hide();
	$(".userinlogin").show();	// 有两处class=userinlogin
	$(".userloading").hide();

	m_userinfos = undefined;
}

// 注销
function logout() {
	//this.disabled = true; // 防止重复提交

	try {
		var prompts = {
			logout: true
		};
		$.post('/Ajax.aspx', prompts, function (data) {
			if (data == "OK") {
				setInlogin();
				//window.top.location.reload();
			}
			else
				alert(data);
			//this.disabled = false;
		});

	}
	catch (err) {
		alert(err.message);
		//this.disabled = false;
	}
}

// 搜索版块方法
function sitesearch() {
	// 取上次搜索的cookie
	var code = parseInt($.cookie("searchcode")); //搜索条件掩码，二进制低四位有效，0 is false, 1 is true, from bit 1 to bit 4 分别表示：内容、标题、论坛、文章
	if (!code)
		code = 0xf; // 如果不存在，搜索全部。
	var search = $.cookie("searchtext");
	//search = search ? decodeURIComponent(search) : ""; //搜索文字
	//search = search ? decodeURI(search) : ""; //搜索文字
	search = search ? unescape(search) : ""; //搜索文字

	// 初始化checkbox
	$("#chkarticle").attr("checked", ((code & 8) === 8));
	$("#chkforum").attr("checked", ((code & 4) === 4));
	$("#chktitle").attr("checked", ((code & 2) === 2));
	$("#chkcontent").attr("checked", ((code & 1) === 1));
	$("#idserch").val(search);

	$(".sitesearch a").click(function () {
		code = 0; //搜索条件掩码，二进制低四位有效，0 is false, 1 is true, from bit 1 to bit 4 分别表示：内容、标题、论坛、文章
		if ($("#chkarticle").attr("checked"))
			code |= 8;
		if ($("#chkforum").attr("checked"))
			code |= 4;
		if ($("#chktitle").attr("checked"))
			code |= 2;
		if ($("#chkcontent").attr("checked"))
			code |= 1;

		//search = encodeURIComponent($("#idserch").val());
		//search = encodeURI($("#idserch").val());
		search = escape($("#idserch").val());

		$.cookie('searchcode', code, { path: "/" , expires: 9999 }); // 保存搜索条件掩码
		$.cookie('searchtext', search, { path: "/", expires: 9999 }); // 保存搜索文字

		window.location = "/Articles/009-8a4b4b28-5493-4607-a592-34d252bd99d8.htm";
});
}

